package com.aokang.footwear.common.config.mp;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonIgnore;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author chilei
 * @description 继承mybatis plus的Page，设置默认不查count() @JsonIgnore 不返回前端
 * @since 2023/7/24
 */
public class MyPage<T> extends Page<T> {

    /**
     * 查询数据列表
     */
    protected List<T> records = Collections.emptyList();

    /**
     * 总数
     */
    protected long total = 0;
    /**
     * 每页显示条数，默认 10
     */
    @JsonIgnore
    protected long size = 10;

    /**
     * 当前页
     */
    @JsonIgnore
    protected long current = 1;

    /**
     * 排序字段信息
     */
    @JsonIgnore
    protected List<OrderItem> orders = new ArrayList<>();

    /**
     * 自动优化 COUNT SQL
     */
    @JsonIgnore
    protected boolean optimizeCountSql = true;
    /**
     * 是否进行 count 查询
     */
    @JsonIgnore
    protected boolean searchCount = true;
    /**
     * {@link #optimizeJoinOfCountSql()}
     */
    @JsonIgnore
    protected boolean optimizeJoinOfCountSql = true;
    /**
     * 单页分页条数限制
     */
    @JsonIgnore
    protected Long maxLimit;
    /**
     * countId
     */
    @JsonIgnore
    protected String countId;

    public MyPage() {
    }

    /**
     * 分页构造函数
     *
     * @param current 当前页
     * @param size    每页显示条数
     */
    public MyPage(long current, long size) {
        super(current, size);
    }

    public MyPage(long current, long size, boolean searchCount) {
        super(current, size, searchCount);
    }
}
